package top.wuchu.test;

import top.wuchu.rpc.api.ByeService;
import top.wuchu.rpc.api.HelloObject;
import top.wuchu.rpc.api.HelloService;
import top.wuchu.rpc.serializer.CommonSerializer;
import top.wuchu.rpc.transport.RpcClientProxy;
import top.wuchu.rpc.transport.socket.client.SocketClient;

/**
 * 测试用消费者（客户端）
 *
 * @author Wuchu
 */
public class SocketTestClient {

    public static void main(String[] args) {

        // 1、通过动态代理的方式，生成一个代理对象RpcClientProxy
        // 2、使用RpcClientProxy调用相关的服务，并获取服务返回的数据

        //SocketClient是封装后的客户端socket，用户自定义序列化协议
        SocketClient client = new SocketClient(CommonSerializer.KRYO_SERIALIZER);

        // 生成一个rpc客户端代理，这个代理通过封装后客户端socket来根据服务名称去获取远程的服务
        RpcClientProxy proxy = new RpcClientProxy(client);

        // 这个helloService相当于是代理对象，它专门负责去调用HelloService接口里面的方法
        HelloService helloService = proxy.getProxy(HelloService.class);
        // 参数
        HelloObject object = new HelloObject(12, "This is a message");
        // 代理对象去调用HelloService接口里面的hello方法
        String res = helloService.hello(object);
        System.out.println(res);

        // 这个byeService相当于是代理对象，它专门负责去调用ByeService接口里面的方法
        ByeService byeService = proxy.getProxy(ByeService.class);
        System.out.println(byeService.bye("Socket"));
    }

}
